<?php

declare(strict_types=1);
/**
 * This file is part of Hyperf.
 *
 * @link     https://www.hyperf.io
 * @document https://hyperf.wiki
 * @contact  group@hyperf.io
 * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
 */

namespace App\Aspect;

use App\Annotation\Test;
use Hyperf\Di\Annotation\Aspect;
use Hyperf\Di\Aop\AbstractAspect;
use Hyperf\Di\Aop\ProceedingJoinPoint;

class FooAspect extends AbstractAspect
{
//    #[
//        Aspect(
//            // classes  要切入的类或 Trait，可以多个，亦可通过 :: 标识到具体的某个方法，通过 * 可以模糊匹配
////            classes: [
////                // 导入需要改变的类
////
////            ],
//            // 要切入的注解，具体切入的还是使用了这些注解的类，仅可切入类注解和类方法注解
//            annotations: [
//                Test::class,
//            ]
//        )
//    ]
    public function process(ProceedingJoinPoint $proceedingJoinPoint)
    {
        // 切面切入后，执行对应的方法会由此来负责
        // $proceedingJoinPoint 为连接点，通过该类的 process() 方法调用原方法并获得结果
        // 在调用前进行某些处理
        return $proceedingJoinPoint->process();
        // 在调用后进行某些处理
    }
}
